]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
Add systemd units
authorIain Lane <iain@orangesquash.org.uk>
Wed, 17 Jan 2018 15:56:17 +0000 (15:56 +0000)
committerFlorian Müllner <florian.muellner@gmail.com>
Tue, 17 Jul 2018 18:10:06 +0000 (18:10 +0000)
So that we can be started by systemd --user, instead of gnome-session.

There are three units:

  - gnome-shell.service: Start gnome-shell itself.
  - gnome-shell-x11.target, gnome-shell-wayland.target: Sync points for
    units that need to care if x11 or wayland is in use.
    gnome-settings-daemon will use these, for example.

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/138

data/gnome-shell-wayland.target [new file with mode: 0644]
data/gnome-shell-x11.target [new file with mode: 0644]
data/gnome-shell.service.in [new file with mode: 0644]
data/meson.build
meson.build
src/meson.build

diff --git a/data/gnome-shell-wayland.target b/data/gnome-shell-wayland.target
new file mode 100644 (file)
index 0000000..a75da3e
--- /dev/null
@@ -0,0 +1,5 @@
+[Unit]
+Description=GNOME Shell (wayland sync point)
+After=gnome-shell.service
+BindsTo=gnome-shell.service
+Conflicts=gnome-shell-x11.target
diff --git a/data/gnome-shell-x11.target b/data/gnome-shell-x11.target
new file mode 100644 (file)
index 0000000..4da1350
--- /dev/null
@@ -0,0 +1,5 @@
+[Unit]
+Description=GNOME Shell (x11 sync point)
+After=gnome-shell.service
+BindsTo=gnome-shell.service
+Conflicts=gnome-shell-wayland.target
diff --git a/data/gnome-shell.service.in b/data/gnome-shell.service.in
new file mode 100644 (file)
index 0000000..ee275fa
--- /dev/null
@@ -0,0 +1,11 @@
+[Unit]
+Description=GNOME Shell
+Wants=gnome-session.service
+After=graphical-session-pre.target gnome-session-bus.target
+PartOf=graphical-session.target
+
+[Service]
+Type=dbus
+ExecStart=@bindir@/gnome-shell
+Restart=on-failure
+BusName=org.gnome.Shell
index 7c98077218d3c5f2811737105b0c74c1b89bc06f..1c2b952a271e35b985fe6453d3d8e5293cb1ddc2 100644 (file)
@@ -93,6 +93,23 @@ schema = configure_file(
   install_dir: schemadir
 )
 
+if have_systemd
+  unitconf = configuration_data()
+  unitconf.set('bindir', bindir)
+
+  unit = configure_file(
+    input: 'gnome-shell.service.in',
+    output: 'gnome-shell.service',
+    configuration: unitconf,
+    install_dir: systemduserunitdir
+  )
+
+  units = files('gnome-shell-wayland.target',
+                'gnome-shell-x11.target')
+
+  install_data(units, install_dir: systemduserunitdir)
+endif
+
 # for unit tests - gnome.compile_schemas() only looks in srcdir
 custom_target('compile-schemas',
   input: schema,
index d3dba0c086919625bdda79cdb10a092accb2f0cc..edc597553fb824eef95a422ca342cabf01b09797 100644 (file)
@@ -59,6 +59,13 @@ servicedir = join_paths(datadir, 'dbus-1', 'services')
 
 plugindir = get_variable('BROWSER_PLUGIN_DIR', mozplugindir)
 
+# XXX: Once https://github.com/systemd/systemd/issues/9595 is fixed and we can
+# depend on this version, replace with something like:
+# systemduserunitdir = systemd_dep.get_pkgconfig_variable('systemduserunitdir',
+#                                                         define_variable: ['prefix', prefix])
+# and uncomment systemd_dep below
+systemduserunitdir = join_paths(libdir, 'systemd', 'user')
+
 keybindings_dep = dependency('gnome-keybindings', required: false)
 if keybindings_dep.found()
   keysdir = keybindings_dep.get_pkgconfig_variable('keysdir')
@@ -117,10 +124,12 @@ else
 endif
 
 if get_option('systemd')
-  systemd_dep = dependency('libsystemd')
-  have_systemd = systemd_dep.found()
+  libsystemd_dep = dependency('libsystemd')
+  # XXX: see systemduserunitdir
+  # systemd_dep = dependency('systemd')
+  have_systemd = true
 else
-  systemd_dep = []
+  libsystemd_dep = []
   have_systemd = false
 endif
 
index 1d655f40716ca6cb75d285894c3b04f37895c56c..2670f589ca167dd6495f6379032eda84e8fa5471 100644 (file)
@@ -53,7 +53,7 @@ gnome_shell_deps = [
   canberra_dep, canberra_gtk_dep,
   polkit_dep,
   gcr_dep,
-  systemd_dep
+  libsystemd_dep
 ]
 
 gnome_shell_deps += nm_deps